Make gdk_window_flush public
authorAlexander Larsson <alexl@redhat.com>
Mon, 14 Sep 2009 14:07:25 +0000 (16:07 +0200)
committerAlexander Larsson <alexl@redhat.com>
Mon, 14 Sep 2009 14:07:25 +0000 (16:07 +0200)
We need to call this from Gtk+, and its concievable that some other
app doing weird stuff could have a use for it.

gdk/gdk.symbols
gdk/gdkwindow.c
gdk/gdkwindow.h

index 8ea2eea6c1f9e76bad98615d1e41a3cf018431da..6e25f878a268221be278dbae4fa1be06fa7f4b32 100644 (file)
@@ -687,6 +687,7 @@ gdk_window_clear_area_e
 gdk_window_constrain_size
 gdk_window_destroy
 gdk_window_end_paint
+gdk_window_flush
 gdk_window_foreign_new
 gdk_window_freeze_toplevel_updates_libgtk_only
 gdk_window_freeze_updates
index ba60fa509799476ded404b0fd5fc62b817c6d4fb..4194993d7cb0f8bff7cc786a43eaf147426e88b8 100644 (file)
@@ -322,7 +322,6 @@ static void recompute_visible_regions   (GdkWindowObject *private,
                                         gboolean recalculate_siblings,
                                         gboolean recalculate_children);
 static void gdk_window_flush_outstanding_moves (GdkWindow *window);
-static void gdk_window_flush            (GdkWindow *window);
 static void gdk_window_flush_recursive  (GdkWindowObject *window);
 static void do_move_region_bits_on_impl (GdkWindowObject *private,
                                         GdkRegion *region, /* In impl window coords */
@@ -3229,7 +3228,29 @@ gdk_window_flush_outstanding_moves (GdkWindow *window)
   impl_window->outstanding_moves = NULL;
 }
 
-static void
+/**
+ * gdk_window_flush:
+ * @window: a #GdkWindow
+ *
+ * Flush all outstanding cached operations on a window, leaving the
+ * window in a state which reflects all that has been drawn before.
+ *
+ * Gdk uses multiple kinds of caching to get better performance and
+ * nicer drawing. For instance, during exposes all paints to a window
+ * using double buffered rendering are keep on a pixmap until the last
+ * window has been exposed. It also delays window moves/scrolls until
+ * as long as possible until next update to avoid tearing when moving
+ * windows.
+ *
+ * Normally this should be completely invisible to applications, as
+ * we automatically flush the windows when required, but this might
+ * be needed if you for instance mix direct native drawing with
+ * gdk drawing. For Gtk widgets that don't use double buffering this
+ * will be called automatically before sending the expose event.
+ *
+ * Since: 2.18
+ **/
+void
 gdk_window_flush (GdkWindow *window)
 {
   gdk_window_flush_outstanding_moves (window);
index 3370e0fd9566d0f1da80ce3aed3897ea8c1a5fad..b8502754b8c260d98254f957e409796d86e2a194 100644 (file)
@@ -509,6 +509,7 @@ void              gdk_window_begin_paint_rect   (GdkWindow          *window,
 void         gdk_window_begin_paint_region (GdkWindow          *window,
                                             const GdkRegion    *region);
 void         gdk_window_end_paint          (GdkWindow          *window);
+void         gdk_window_flush             (GdkWindow          *window);
 
 void         gdk_window_set_title         (GdkWindow     *window,
                                            const gchar   *title);